Page({
  // 触发获取位置信息的函数
  async onLocation() {
    try {
      // 获取当前用户的设置
      const { authSetting } = await wx.getSetting()

      // 判断用户是否拒绝授权位置信息
      if (authSetting['scope.userLocation'] === false) {
        // 请求用户授权位置信息
        await this.requestLocationPermission()
      } else {
        // 用户已经授权，可以直接获取位置信息
        await this.getLocationAndLog()
      }
    } catch (error) {
      // 在出现错误时显示一个提示
      wx.showToast({
        title: '位置获取失败',
        icon: 'none',
      })
    }
  },

  // 请求用户授权位置信息
  async requestLocationPermission() {
    // 显示授权提示弹窗
    wx.showModal({
      title: '授权提示',
      content: '需要授权位置信息，请确认授权',
      // 弹窗结果的回调函数
      success: async (res) => {
        // 用户选择确认授权
        if (res.confirm) {
          // 打开设置页面
          await wx.openSetting()
          // 再次获取当前用户的设置
          const { authSetting } = await wx.getSetting()

          // 如果用户在设置中授权成功
          if (authSetting['scope.userLocation'] === true) {
            // 获取位置信息并记录
            await this.getLocationAndLog()
          } else {
            // 用户在设置中未授权，显示授权失败提示
            wx.showToast({
              title: '授权失败',
              icon: 'none',
            })
          }
        } else {
          // 用户拒绝授权，显示拒绝提示
          wx.showToast({
            title: '您拒绝了授权',
            icon: 'none',
          })
        }
      },
    })
  },

  // 获取位置信息并记录
  async getLocationAndLog() {
    try {
      // 获取位置信息
      const res = await wx.getLocation()
      // 打印位置信息
      console.log(res)
    } catch (error) {
      // 获取位置信息失败，显示提示
      wx.showToast({
        title: '您拒绝了授权位置信息',
        icon: 'none',
      })
    }
  },
})
